package com.gitee.shop.domain;

import java.util.LinkedHashMap;
import java.util.Map;

/**
 * 描述购物车
 */
public class Cart {
    //购物项的map集合
    private Map<Integer,CartItem> cartItems = new LinkedHashMap<>();

    //总价
    private double total;

    //添加购物项的功能
    public void addCartItem(CartItem cartItem){

        //获取要添加的购物项的key和商品id
        Integer id = cartItem.getItem().getId();
        //判断是否已经存在购物项
        if (cartItems.containsKey(id)){
            //如果已经存在，更新数量
            //先从map中取出原购物项
            CartItem cartItem_old = cartItems.get(id);
            //更新
            cartItem_old.setCount(cartItem.getCount()+cartItem_old.getCount());


        }else {
            //如果不存在,直接添加
            cartItems.put(id, cartItem);

        }
        //更新总价
        total = total + cartItem.getSubtotal();

    }

    //删除购物车
    public void delecte(Integer id){
        //根据id删除
        //remove方法返回的是被删除的购物项
        CartItem remove = cartItems.remove(id);
        //更新
        total = total - remove.getSubtotal();
    }

    //清空购物车
    public void clear(){
        cartItems.clear();
        total = 0;
    }

    public Map<Integer, CartItem> getCartItems() {
        return cartItems;
    }

    public void setCartItems(Map<Integer, CartItem> cartItems) {
        this.cartItems = cartItems;
    }

    public double getTotal() {
        return total;
    }


    public void setTotal(double total) {
        this.total = total;
    }
}
